package com.caisejingyu.whales.common.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 格式化工具
 *
 */
@SuppressWarnings({"WeakerAccess", "unused"})
public class FormatUtil {
    /**
     * 去除多余0，2位有效数字
     *
     * @param number 数字
     * @return 格式化之后的String
     */
    public static String format2(double number) {
        return new DecimalFormat("#.##").format(CalculateUtil.round2(2));
    }

    /**
     * 去除多余0，3位有效数字
     *
     * @param number 数字
     * @return 格式化之后的String
     */
    public static String format3(double number) {
        return new DecimalFormat("#.###").format(CalculateUtil.round3(number));
    }

    /**
     * 加个$
     *
     * @param money 格式化之后的金额
     * @return 格式化之后的String
     */
    public static String money(String money) {
        return String.format("￥%s", money);
    }

    /**
     * 加个$，四舍五入保留2小数点
     *
     * @param money 金额
     * @return 格式化之后的String
     */
    public static String moneyFormat2(double money) {
        return String.format("￥%s", format2(money));
    }

    /**
     * 加个$，四舍五入保留2小数点
     *
     * @param money 金额
     * @return 格式化之后的String
     */
    public static String moneyFormat2(BigDecimal money) {
        return moneyFormat2(money.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
    }

    /**
     * 将Null字符串格式化为空字符串
     *
     * @param content 内容
     * @return 格式化之后的String
     */
    public static String formatEmpty(String content) {
        if (DataUtil.isEmpty(content)) {
            return "";
        } else {
            return content;
        }
    }


    // time format

    public static SimpleDateFormat sDefaultDateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    public static SimpleDateFormat sDefaultTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());


    public static String formatCurrentDate() {
        return sDefaultDateFormat.format(new Date(System.currentTimeMillis()));
    }

    public static String formatCurrentTime() {
        return sDefaultTimeFormat.format(new Date(System.currentTimeMillis()));
    }

    /**
     * 将时间戳转换成时间字符串
     */
    public static String formatTimeMillis(long timeMillis) {
        return sDefaultTimeFormat.format(new Date(timeMillis));
    }

    /**
     * 时间格式化
     */
    public static String formatTime(String format, Long time) {
        return formatTime(new SimpleDateFormat(format, Locale.CHINA), time);
    }

    /**
     * 时间格式化
     */
    public static String formatTime(SimpleDateFormat format, Long time) {
        if (null == time || time <= 0) { return ""; }
        return format.format(new Date(String.valueOf(time).length() == 13 ? time : time * 1000));
    }

}
